API(Recommend)

概要

このドキュメントでは、サーバーサイド統合のためのRecommend APIの使用方法について説明します。当社のAPIはRESTに似ており、すべてのレスポンスはJSON形式で返されます。また、クロスオリジンリソース共有にも対応しており、クライアントサイドのWebアプリケーションから安全に操作することができます。(ただし、秘密のAPIキーを公開されたWebサイトのクライアントサイドコードに露出させないでください)。

このガイドは以下の前提を想定しています:

  • Webまたはアプリケーション開発の経験があること。

  • REST APIについての理解があること。

  • JSONデータのデシリアライズおよび利用方法を理解していること。

  • ECサイトおよびアプリケーションに関する基本的な知識があること。

  • Recommendについてすでに知っていること。

利点

  • サーバーサイド統合では、Algonomyのp13n.js(パーソナライズ用メディアライブラリ)を各Webページに読み込む必要がありません。

  • APIは、スタンドアロンのコールセンターやPOSアプリケーションなど、Webベースでないアプリケーションでも使用できます。

  • レスポンスは、Webブラウザ内で実行されないプログラミング言語によるサーバーサイドコードで処理できます。これは、追加のリソースやバックエンドシステムが必要な場合に有効です。たとえば、製品の価格が頻繁に変更される場合、recsForPlacements APIのレスポンスで返された製品IDを使用して、製品管理システムまたはデータベースからリアルタイム価格を取得し、それをWebサイト上に表示することができます。

前提条件

  • サーバーサイドのレスポンス処理コードが可視化できないため、Algonomyの統合コンサルタントがデバッグ支援を行うのが難しくなります。

  • レスポンス形式の制御が少なくなります。recsForPlacements APIを使用して推奨を要求する場合、推奨された製品に関連するほとんどのデータ(カテゴリや属性など)が返されます。リクエスト内のパラメーターを使ってレスポンスのサイズを削減することはできますが、JSONレスポンスの正確なフォーマットやレイアウトは、クライアントサイド統合のようにカスタマイズすることはできません。

Recommend API

Recommendから推奨を取得するためのメインAPIはrecsForPlacements APIです。本ドキュメントの残りの部分では、このAPIの使用方法に焦点を当てます。

サイト上のページを統合する最初のステップは、リクエストしたいWebページのタイプ(またはアプリケーションの一部)に最も近いページタイプを決定することです。ページタイプはパーソナライズプロセスにおいて重要な役割を果たします。これは、Experience Optimizerがリアルタイムで顧客の購買意欲に影響を与える可能性が高い推奨戦略を判断する際のコンテキストを設定するためです。各ページタイプには必須パラメーターがあります。以下に示すのは、よくあるECサイトのページタイプに対して、サーバーサイド統合の例としてのrecsForPlacement API呼び出しです: 

recsForPlacementsリファレンスページで、入力パラメーターの包括的な一覧をご覧ください。

関連API

recsForPlacements APIと一緒に使用する、または代替として使用可能な他の関連APIもいくつか存在します。これには、製品カタログの更新や、Recommendにユーザー情報を照会するためのAPIなどが含まれます。これらのAPIのほとんどはこのドキュメントの範囲外ですが、他のAPIの一覧はPersonalization Cloud: APIsリファレンスページに掲載されています。

サーバーサイド実装用APIエンドポイント

本番環境

本番環境で推奨を取得するには以下のURLを使用してください:

Copy
https://recs.richrelevance.com/rrserver/api/rrPlatform/recsForPlacements

統合環境

QA、ステージング、または開発環境から推奨を取得するには、以下のURLを使用してください。この方法により、本番環境に影響を与えずに(マーチャンダイジングや戦略ルールなどの)変更をテストできます。

Copy
https://integration.richrelevance.com/rrserver/api/rrPlatform/recsForPlacements

IMPORTANT: 変更を加えた後は、Algonomyのコンサルタントと連携して、バニティURLをhttps://[customername].algorecs.comまたはhttps://recs.algorecs.comに更新してください。API呼び出しおよび計測メカニズムで使用されるその他のパラメーターはすべて同じままで構いません。

クライアントサイド実装用APIエンドポイント

Personalization CloudへWebブラウザから直接APIリクエストを送信することは推奨されていません。APIゲートウェイを使用したリバースプロキシ方式で、自社ドメインを通じてAPIリクエストをルーティングしてください。APIゲートウェイのリバースプロキシ方式の詳細については、API Reverse Proxy Domainを参照してください。

JavaScriptソリューションの詳細については、クライアントサイド統合ガイドを参照してください。もし、WebブラウザからPersonalization Cloudへ直接API呼び出しを実装している場合は、APIエンドポイントで新しい専用のデータキャプチャドメインであるhttps://recs.algorecs.comに更新することを推奨します。

本番環境

本番環境で推奨を取得するには以下のURLを使用してください:

Copy
https://recs.algorecs.com/rrserver/api/rrPlatform/recsForPlacements

統合環境

QA、ステージング、または開発環境から推奨を取得するには、以下のURLを使用してください。この方法により、本番環境に影響を与えずに(マーチャンダイジングや戦略ルールなどの)変更をテストできます。

Copy
https://integration.algorecs.com/rrserver/api/rrPlatform/recsForPlacements

IMPORTANT: 変更を加えた後は、Algonomyのコンサルタントと連携して、バニティURLを https://[customername].algorecs.com または https://recs.algorecs.com に更新してください。

API呼び出しおよび計測メカニズムで使用されるその他のパラメーターはすべて同じままで構いません。

認証

APIリクエストにAPIキーおよびAPIクライアントキーを含めて認証を行います。APIキーの管理はダッシュボードで行うことができます。APIキーには多くの権限があるため、必ず安全に保管してください。GitHub、検索可能なpastebinサイト、クライアントサイドコードなど、公開されている場所では秘密のAPIキーを共有しないでください。

JSON-P コールバック

recsForPlacements API 呼び出しのレスポンスを JSON 関数でラップするには、jsonp フラグをオンにして、jcp パラメーターに JavaScript のコールバック関数を指定します。例:?jsonp=true&jcp=myCallback

JSON-P はクロスドメインの問題を回避するためによく使用されます。たとえば、Webブラウザ内で動作するアプリケーションでAPIから返された推奨結果を利用する場合に有用です。ただし、Webベースのアプリケーションでは、recsForPlacements API の代わりにCore JSON Integrationの使用を推奨します。

クライアントエラー

不正なパラメーター値の指定などにより発生したほとんどのエラーは、HTTPステータス 200 OK として返され、レスポンスボディにエラー内容が記述されます。そのため、エラーの詳細を確認するにはレスポンスの解析が必要です。

Copy
{
  "errormessage": "recsForPlacements API リクエストの処理中に内部エラーが発生しました",
  "status": "error"
}

リクエスト処理中に内部エラー(稀)が発生した場合は、HTTP 500(5xx)レスポンスが返されることがあります。

パラメーター

以下は、ページタイプ別に recsForPlacements API リクエスト時に含める必要があるパラメーターの説明です。すべてのパラメーターの一覧については、recsForPlacementsリファレンスをご参照ください。

共通必須パラメーター

以下のパラメーターは、ページタイプに関係なく recsForPlacements API に必要です。

名前

説明

apiKey

サイトを識別する一意のキー。Algonomyの各クライアントには、他のクライアントとデータやトラフィックを分離するための専用APIキーが割り当てられます。

例:apiKey=4faeaf752ee40a0f

apiClientKey

API実装ごとに固有のキー。レポート、権限、マーチャンダイジングのために、特定のアプリケーションまたはクライアントを識別します。Algonomyから提供されます。

例:apiClientKey=b0126f995ac848159d

sessionId

顧客による1回の訪問を識別します。セッションは行動モデル(ショッピングセッション内のユーザー行動を把握する)やレポート指標で使用されます。

例:sessionId=93484

userId

ユーザーID。各顧客(ユーザー)を一意に識別する文字列です。すべての顧客行動はこのキーを使って記録されます。大文字と小文字は区別され、他のアプリケーションでAlgonomyに送信されたユーザーIDと同じである必要があります。

例:userId=0982347

Note: ユーザーがログインしていない状態の場合、userIdパラメーターの値は空にしてください。Recommendは sessionId の値を仮のユーザーIDとして使用し、ユーザーがログインした際に匿名の行動データを実際のユーザーIDにリンクします。

placements

プレースメント識別子のリスト。各識別子はページタイプとプレースメント名で構成され、「|」記号で区切られます。

  • 各プレースメントに対して1セットの推奨結果が返されます。

  • すべてのプレースメントは同じページタイプでなければなりません。

  • 最初のプレースメントは「最良」と見なされ、最適な推奨戦略が適用されます。

  • 複数のプレースメントが要求される場合、それぞれに固有の戦略と製品が割り当てられます。

例:placements=item_page.horizontal|item_page.vertical

共通オプションパラメーター

以下のパラメーターは必須ではありませんが、実用的であり、ベストプラクティスとして使用することが推奨されます。

名前

説明

rcs

Algonomy クッキー文字列。このパラメーターは、API リクエストに関連するユーザーの暗号化された Algonomy クッキーを含みます。以前の API レスポンスで受け取ったとおりに正確に渡す必要があります。

クライアントは、提供された 'rcs' の値を変更せずに保持するようにしてください。このパラメーターは常に英数字で、大文字小文字を区別し、トークンには英字と数字の組み合わせが含まれます。

Note: 'rcs' パラメーターにより、マーチャントはユーザーの Algonomy ブラウザクッキーをプロキシ(またはパススルー)として渡すことができます。これは、サーバーサイドAPIを介してクッキーの読み書きを行い、Algonomy に提供する処理です。

chi

カテゴリヒントID。このパラメーターは、明示的にカテゴリコンテキスト(カテゴリID)を設定したり、通常使用されるカテゴリを上書きするために使用します。

カテゴリがあいまいなページ(複数のカテゴリに属する商品の商品ページなど)で有効です。

カテゴリページ以外のページで明示的にカテゴリを設定しない場合、一部の戦略は productId からカテゴリ情報を推測します。代わりにカテゴリを明示的に指定することで、たとえばユーザーのパンくずリストの状態と一致させることが可能です。

カテゴリヒントは任意のページタイプに追加できます。「|」記号で区切ることで複数のカテゴリヒントを指定できます。これにより、各カテゴリに関連するマーチャンダイジングルールが適用されます。

例:chi=casual_tops|womens_activewear|activewear

productId

Search および Category ページタイプでは、最大15個の製品IDを pipe「|」区切りで指定できます。Search および Category ページで製品IDを渡すことは、戦略に対するより良いコンテキストを提供するためのベストプラクティスです。

例:productId=A040520003423|J040520076542|L0405200903939|J040520089878

ページタイプ別のパラメーター

上記の共通パラメーターに加え、以下の表では各ページタイプに必要な追加パラメーターについて説明しています。

ページタイプ

ページタイプ固有のパラメーター

API 呼び出し例

ホームページ

 

 

 

   

カートに追加ページ

 atcid

カート追加ID。これは1つの製品IDまたは製品IDのリストです。複数の商品が追加された場合は、pipe「|」で区切ってください。

例:atcid=uv2345|xt1234

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=add_to_cart_page.atc_page_rr1_test&atcid=CON-NC4P-15454W2K%7CD1H79AV

カートページ

productId

1つの製品IDまたは製品IDのリスト。購入完了ページの注文定義の一部です。「|」で区切ってください。

例:productId=uv2345|xt1234

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=cart_page.rr_warranties&productId=WHYM-F-CP23-N

ブランドページ

fpb

ページで表示されているブランド。Brand Top Sellers などのブランド起点の戦略のためのシード設定に使用されます。

例:fpb=Microsoft

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=brand_page.rr1_test&fpb=Lenovo

カテゴリページ

categoryId

調査対象のカテゴリID。値は、マーチャントがAlgonomyに提供したカテゴリの外部IDと一致している必要があります。

例:categoryId=902312

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=category_page.rr1%7Ccategory_page.rr2&categoryId=C-JF

エラーページ

 

 

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=error_page.rr1

汎用ページ

 

 

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=generic_page.rr1_test

アイテムページ

productId

1つまたは複数の製品ID。購入完了ページの注文定義の一部です。複数の場合は「|」で区切ってください。

例:productId=uv2345|xt1234

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=item_page.rr_recommended_qa&productId=E7W53A%230D1&chi=C-CC

パーソナルページ

 

 

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=personal_page.rr1

購入完了ページ

 

 

 

 

productId

1つまたは複数の製品ID。購入完了ページの注文定義の一部です。製品IDは「|」で区切ります。

例:productId=uv2345|xt1234

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=purchase_complete_page.rr1&productId=4XB0G88733&o=300242352342&q=1&pp=228.99&ppc=22899

o

注文ID。注文定義の一部です。例:o=902312

pp

商品価格のリスト。pp に渡される価格のインデックスは productId に対応しています。サイトの通貨乗数が適用されます。「|」で区切ります。

例:pp=29.99|32.97

ppc

セント単位での商品価格のリスト。値のインデックスは productId に対応し、サイトの通貨乗数は適用されません。数値のみ(記号・区切りなし)で指定してください。

例:ppc=2999|3297 (これは $29.99 および $32.97 を表します)

q

数量のリスト。productId に対応する数量です。「|」で区切ってください。

例:q=2|1

検索ページ

 

 

 

GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=search_page.rr1%7Csearch_page.rr2&searchTerm=Lenovo

レスポンス例

レスポンスは、現在のユーザー向けに推奨された商品オブジェクトのリストを含むJSONオブジェクトです。以下は、靴カテゴリから2つの商品が推奨された例です:

レスポンスヘッダー

Copy
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2018 22:16:47 GMT
Set-Cookie: m=1;Path=/
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json;charset=utf-8
Vary: Accept-Encoding
Content-Length: 2390
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS, POST
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization, X-Requested-With

レスポンスボディ

Copy
{
  "rcs": "eF5j4cotK8lM4TMzsNA11DVkKU32MEkyBAJjM11jYzMzXRNTozRdA0sgYZxiammQaGJmZmaaDABuTQ0O",
  "placements": [
    {
      "htmlElementId": "home_page_0",
      "placementType": "home_page",
      "strategyMessage": "Shop Top Sellers",
      "html": "",
      "placement": "home_page.rr1",
      "recommendedProducts": [
        {
          "clickURL": "https://integration.richrelevance.com/rrserver/apiclick?a=showcaseparent&cak=776cdd80331919e7&ct=http%3A%2F%2Flabs.richrelevance.com%2Fstorre%2Fcatalog%2Fproduct%2Fview%2Fsku%2F22127002&vg=4b121136-3366-452f-092f-3d590a46665c&stid=126&pti=9&pa=11339&pos=0&p=22127002&channelId=776cdd80331919e7&s=827ccb0eea8a706c4c34a16891f84e7b&u=12345&mvtId=-1&mvtTs=1529712166361",
          "regionPriceDescription": "",
          "salePriceRangeCents": [
            1,
            1
          ],
          "rating": 3.884,
          "numReviews": 0,
          "priceRangeCents": [
            1,
            1
          ],
          "categoryIds": [
            "Electronics",
            "Electronics.Computers",
            "Electronics.Computers.Tablet PCs"
          ],
          "clickTrackingURL": "https://integration.richrelevance.com/rrserver/apiclick?a=showcaseparent&cak=776cdd80331919e7&vg=4b121136-3366-452f-092f-3d590a46665c&stid=126&pti=9&pa=11339&pos=0&p=22127002&channelId=776cdd80331919e7&s=827ccb0eea8a706c4c34a16891f84e7b&u=12345&mvtId=-1&mvtTs=1529712166361",
          "salePriceCents": 1,
          "regionalProductSku": "22127002",
          "imageURL": "http://labs.richrelevance.com/storre/media/catalog/product/n/e/nextbook-7quot-tablet-with-8gb-memory-with-google-mobile-services-73fbdb1640b18e99695aa87c7da712f5.jpg",
          "name": "\"Nextbook 7\\\" Tablet with 8GB Memory with Google Mobile Services\"",
          "genre": "default",
          "isRecommendable": true,
          "priceCents": 6900,
          "attributes": {
            "MktplcInd": [
              "W"
            ],
            "Clearance": [
              "N"
            ],
            "97CentShipping": [
              "N"
            ],
            "Rollback": [
              "N"
            ],
            "Online": [
              "Y"
            ],
            "ListPrice": [
              "79"
            ],
            "AddToCart": [
              "Y"
            ],
            "IsReducedPrice": [
              "N"
            ],
            "IsSubmap": [
              "N"
            ],
            "S2S": [
              "Y"
            ]
          },
          "id": "22127002",
          "categories": [
            {
              "hasChildren": false,
              "name": "Electronics",
              "childCategories": [],
              "ancestorCategories": [],
              "id": "Electronics",
              "isActive": false
            },
            {
              "hasChildren": false,
              "name": "Computers",
              "childCategories": [],
              "ancestorCategories": [],
              "id": "Electronics.Computers",
              "isActive": false
            },
            {
              "hasChildren": false,
              "name": "Tablet PCs",
              "childCategories": [],
              "ancestorCategories": [],
              "id": "Electronics.Computers.Tablet PCs",
              "isActive": false
            }
          ],
          "productURL": "http://labs.richrelevance.com/storre/catalog/product/view/sku/22127002",
          "brand": "Nextbook"
        }
      ]
    }
  ],
  "viewGuid": "4b121136-3366-452f-092f-3d590a46665c",
  "status": "ok"
}

リソース

以下は、recsForPlacements API への正常な呼び出しによって返されるリソース(JSONオブジェクト)の詳細な説明です。

レスポンスオブジェクト

レスポンスオブジェクトには、recsForPlacements API 呼び出しで要求された各プレースメントに対応するプレースメントオブジェクトが含まれます。

フィールド

説明

viewGuid

この推奨セットの一意の識別子。

rcs

Algonomy クッキー。マーチャントがユーザーのブラウザとやり取りするために使用する(クッキープロキシ / パススルー)。

placements

プレースメントオブジェクトのJSON配列。各プレースメントは、推奨商品リストを含みます。

status

"ok" または "error" のいずれか。

errormessage

status が "error" の場合に、エラーの説明が含まれます。

プレースメントオブジェクト

プレースメントオブジェクトは、そのプレースメントに適用された戦略によって決定された1つ以上の推奨商品を含みます。

フィールド

説明

htmlElementId

?(UI要素ID)

placementType

プレースメントのページタイプ。

strategyMessage

推奨された商品を決定した戦略に対するメッセージ。

html

?(HTMLレスポンス、または空)

placement

プレースメントのID。

recommendedProducts

そのプレースメントに対する推奨商品群のJSON配列。

商品オブジェクト

商品オブジェクトは、あるプレースメントに対して推奨された個々の商品を表します。

フィールド

説明

id

商品のID。

name

商品の名称。

imageURL

商品の画像URL。

clickURL

クリックURL。推奨商品クリックを追跡し、商品詳細ページへリダイレクトします。

productURL

商品の紹介ページへのリンク。

clickTrackingURL

商品クリックを追跡するが、商品詳細ページへはリダイレクトしないURL。productURLと併用可能。

rating

商品の総合評価を示す小数値。デフォルトは -1.0(評価なし)。

numReviews

商品のレビュー数(整数)。デフォルトは0。

priceRangeCents

商品の最低価格と最高価格を表すセント単位の配列。

priceCents

商品の価格(セント単位)。

salePriceCents

商品の最低および最高セール価格を表すセント単位の配列。

regionalProductSku

ユーザーの地域に対応する商品のSKU。[RegionおよびSKUフィードとの関係は?]

regionalPriceDescription

?(地域価格に関する説明)

attributes

商品属性オブジェクトのJSON配列。

brand

商品のブランド。

genre

商品のジャンル。

categoryIds

商品が属するカテゴリIDの配列。

categories

商品が属するカテゴリを表すカテゴリオブジェクトの配列。

isRecommendable

商品が推奨可能かどうか(常に true)。

属性オブジェクト

商品オブジェクトには、1つ以上の属性オブジェクトを含めることができます。これらの属性は、製品カタログフィードおよび/またはカタログ更新APIを介してRecommendに渡されます。

フィールド

説明

属性名*

属性の名称。

属性値*

属性の値。

* これらは、製品カタログフィードおよび/またはカタログ更新APIで定義されます。

カテゴリオブジェクト

商品オブジェクトには、1つ以上のカテゴリオブジェクトを含めることができます。カテゴリは、製品カタログフィードおよび/またはカタログ更新APIで定義されます。

フィールド

説明

id

カテゴリのID。

name

カテゴリの名称。

childCategories

子カテゴリの配列(親カテゴリの場合)。

ancestorCategories

祖先カテゴリの配列(子カテゴリの場合)。[何世代まで?]

isActive

カテゴリがアクティブかどうか。